<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>40.5. Class autodiscovering.</title>
<link rel="stylesheet" href="dbstyle.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<link rel="start" href="index.html" title="Programmer's Reference Guide">
<link rel="up" href="zend.soap.html" title="Chapter 40. Zend_Soap">
<link rel="prev" href="zend.soap.autodiscovery.introduction.html" title="40.4. AutoDiscovery. Introduction">
<link rel="next" href="zend.soap.autodiscovery.functions.html" title="40.6. Functions autodiscovering.">
<link rel="chapter" href="introduction.html" title="Chapter 1. Introduction to Zend Framework">
<link rel="chapter" href="zend.acl.html" title="Chapter 2. Zend_Acl">
<link rel="chapter" href="zend.auth.html" title="Chapter 3. Zend_Auth">
<link rel="chapter" href="zend.cache.html" title="Chapter 4. Zend_Cache">
<link rel="chapter" href="zend.config.html" title="Chapter 5. Zend_Config">
<link rel="chapter" href="zend.console.getopt.html" title="Chapter 6. Zend_Console_Getopt">
<link rel="chapter" href="zend.controller.html" title="Chapter 7. Zend_Controller">
<link rel="chapter" href="zend.currency.html" title="Chapter 8. Zend_Currency">
<link rel="chapter" href="zend.date.html" title="Chapter 9. Zend_Date">
<link rel="chapter" href="zend.db.html" title="Chapter 10. Zend_Db">
<link rel="chapter" href="zend.debug.html" title="Chapter 11. Zend_Debug">
<link rel="chapter" href="zend.dojo.html" title="Chapter 12. Zend_Dojo">
<link rel="chapter" href="zend.dom.html" title="Chapter 13. Zend_Dom">
<link rel="chapter" href="zend.exception.html" title="Chapter 14. Zend_Exception">
<link rel="chapter" href="zend.feed.html" title="Chapter 15. Zend_Feed">
<link rel="chapter" href="zend.filter.html" title="Chapter 16. Zend_Filter">
<link rel="chapter" href="zend.form.html" title="Chapter 17. Zend_Form">
<link rel="chapter" href="zend.gdata.html" title="Chapter 18. Zend_Gdata">
<link rel="chapter" href="zend.http.html" title="Chapter 19. Zend_Http">
<link rel="chapter" href="zend.infocard.html" title="Chapter 20. Zend_InfoCard">
<link rel="chapter" href="zend.json.html" title="Chapter 21. Zend_Json">
<link rel="chapter" href="zend.layout.html" title="Chapter 22. Zend_Layout">
<link rel="chapter" href="zend.ldap.html" title="Chapter 23. Zend_Ldap">
<link rel="chapter" href="zend.loader.html" title="Chapter 24. Zend_Loader">
<link rel="chapter" href="zend.locale.html" title="Chapter 25. Zend_Locale">
<link rel="chapter" href="zend.log.html" title="Chapter 26. Zend_Log">
<link rel="chapter" href="zend.mail.html" title="Chapter 27. Zend_Mail">
<link rel="chapter" href="zend.measure.html" title="Chapter 28. Zend_Measure">
<link rel="chapter" href="zend.memory.html" title="Chapter 29. Zend_Memory">
<link rel="chapter" href="zend.mime.html" title="Chapter 30. Zend_Mime">
<link rel="chapter" href="zend.openid.html" title="Chapter 31. Zend_OpenId">
<link rel="chapter" href="zend.paginator.html" title="Chapter 32. Zend_Paginator">
<link rel="chapter" href="zend.pdf.html" title="Chapter 33. Zend_Pdf">
<link rel="chapter" href="zend.registry.html" title="Chapter 34. Zend_Registry">
<link rel="chapter" href="zend.rest.html" title="Chapter 35. Zend_Rest">
<link rel="chapter" href="zend.search.lucene.html" title="Chapter 36. Zend_Search_Lucene">
<link rel="chapter" href="zend.server.html" title="Chapter 37. Zend_Server">
<link rel="chapter" href="zend.service.html" title="Chapter 38. Zend_Service">
<link rel="chapter" href="zend.session.html" title="Chapter 39. Zend_Session">
<link rel="chapter" href="zend.soap.html" title="Chapter 40. Zend_Soap">
<link rel="chapter" href="zend.test.html" title="Chapter 41. Zend_Test">
<link rel="chapter" href="zend.text.html" title="Chapter 42. Zend_Text">
<link rel="chapter" href="zend.timesync.html" title="Chapter 43. Zend_TimeSync">
<link rel="chapter" href="zend.translate.html" title="Chapter 44. Zend_Translate">
<link rel="chapter" href="zend.uri.html" title="Chapter 45. Zend_Uri">
<link rel="chapter" href="zend.validate.html" title="Chapter 46. Zend_Validate">
<link rel="chapter" href="zend.version.html" title="Chapter 47. Zend_Version">
<link rel="chapter" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="chapter" href="zend.xmlrpc.html" title="Chapter 49. Zend_XmlRpc">
<link rel="appendix" href="requirements.html" title="Appendix A. Zend Framework Requirements">
<link rel="appendix" href="coding-standard.html" title="Appendix B. Zend Framework Coding Standard for PHP">
<link rel="appendix" href="copyrights.html" title="Appendix C. Copyright Information">
<link rel="index" href="the.index.html" title="Index">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader"><table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">40.5. Class autodiscovering.</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="zend.soap.autodiscovery.introduction.html">Prev</a> </td>
<th width="60%" align="center">Chapter 40. Zend_Soap</th>
<td width="20%" align="right"> <a accesskey="n" href="zend.soap.autodiscovery.functions.html">Next</a>
</td>
</tr>
</table></div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="zend.soap.autodiscovery.class"></a>40.5. Class autodiscovering.</h2></div></div></div>
<p>
        If class is used to provide SOAP server functionality, then the same class should be provided to 
        <code class="code">Zend_Soap_AutoDiscovery</code> for WSDL generation:
        </p>
<pre class="programlisting">&lt;?php
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover-&gt;setClass('My_SoapServer_Class');
$autodiscover-&gt;handle();</pre>
<p>
    </p>
<p>
        The following rules are used while WSDL generation:
        </p>
<div class="itemizedlist"><ul type="disc">
<li><p>Generated WSDL describes an RPC style Web Service.</p></li>
<li><p>Class name is used as a name of the Web Service being described.</p></li>
<li>
<p>
                    <code class="code">'http://'  .$_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']</code> is used 
                    as an URI where the WSDL is available.
                </p>
<p>
                     It's also used as a target namespace for all service related names (including 
                     described complex types).
                </p>
</li>
<li>
<p>
                    Class methods are joined into one <a href="http://www.w3.org/TR/wsdl#_porttypes" target="_top">Port Type</a>.
                </p>
<p>
                    <code class="code">$className . 'Port'</code> is used as Port Type name.
                </p>
</li>
<li><p>Each class method is registered as a corresponding port operation.</p></li>
<li>
<p>Each method prototype genrerates corresponding Request/Response messages.</p>
<p>Method may have several prototypes if some method parameters are optional.</p>
</li>
</ul></div>
<p>
    </p>
<div class="note"><table border="0" summary="Note: Important!">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
<th align="left">Important!</th>
</tr>
<tr><td align="left" valign="top">
<p>
            WSDL autodiscovery utilizes the PHP docblocks provided by the developer to determine the parameter and return types. 
            In fact, for scalar types, this is the only way to determine the parameter types, and for return types, this is the 
            only way to determine them.
        </p>
<p>
            That means, providing correct and fully detailed docblocks is not only best practice, but is required for discovered class. 
        </p>
</td></tr>
</table></div>
</div>
<div class="navfooter"><table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="zend.soap.autodiscovery.introduction.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="zend.soap.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="zend.soap.autodiscovery.functions.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">40.4. AutoDiscovery. Introduction </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> 40.6. Functions autodiscovering.</td>
</tr>
</table></div>
<div class="revinfo"></div>
</body>
</html>
